package com.dhnsoft.代码随想录.数组;

import java.util.Arrays;

/**
 * ClassName: d05_59_螺旋矩阵II
 * Package: com.dhnsoft.代码随想录
 * Description:
 *
 * @Author dhn
 * @Create 2024/3/3 13:55
 * @Version 1.0
 */
public class d05_59_螺旋矩阵II {

    public static int[][] generateMatrix(int n) {
        int[][] arr = new int[n][n];
        int loop=0;
        int i = 0,j = 0;
        int startX=0,startY=0;//定义初始的x、y轴点
        int offset = 1;//定义偏移值，因为是左闭右开区间，所以最后一个值不能填充，每轮都会减少一个offset
        int count=1;//定义填充值
        while (loop++<n/2){
            //定义从左到右,i不变，j在变
            for (j=startY;j<n-offset;j++){
                arr[startX][j] = count++;
            }
            //定义从上往下,j不变，i在变
            for (i=startX;i<n-offset;i++){
                arr[i][j]=count++;
            }
            //定义从右往左,i不变，j在变,j不用赋值，因为已经在最后一列了
            for (;j>startY;j--){
                arr[i][j]=count++;
            }
            //定义从下往上，j不变，i在变,i不用赋值，因为已经在最后一行了
            for (;i>startX;i--){
                arr[i][j]=count++;
            }
            startX++;
            startY++;
            offset++;
        }
        if(n%2==1){
            arr[n/2][n/2]=count;
        }
        return arr;
    }

    public static void main(String[] args) {
        int[][] ints = generateMatrix(3);
        for (int[] anInt : ints) {
            System.out.println(Arrays.toString(anInt));
        }
    }
}
